package com.eduagent.xwqeduagent.api.RealTimeVoiceToTextConversion.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 实时语音转写参数
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ASRParams {
    /**
     * 实时语音转写语种，不传默认为中文
     * cn: 中文、中英混合识别
     * en: 英文
     */
    private String lang;
    
    /**
     * 翻译类型, normal表示普通翻译
     */
    private String transType;
    
    /**
     * 翻译策略
     * 1: 转写的vad结果直接送去翻译
     * 2: 返回中间过程中的结果
     * 3: 按照结束性标点拆分转写结果请求翻译
     */
    private Integer transStrategy;
    
    /**
     * 目标翻译语种
     * cn: 中文
     * en: 英文
     */
    private String targetLang;
    
    /**
     * 标点过滤控制，默认返回标点，punc=0会过滤结果中的标点
     */
    private String punc;
    
    /**
     * 垂直领域个性化参数
     * court: 法院
     * edu: 教育
     * finance: 金融
     * medical: 医疗
     * tech: 科技
     * isp: 运营商
     * gov: 政府
     * ecom: 电商
     * mil: 军事
     * com: 企业
     * life: 生活
     * car: 汽车
     */
    private String pd;
    
    /**
     * 远近场切换，不传此参数或传1代表远场，传2代表近场
     */
    private Integer vadMdn;
    
    /**
     * 是否开角色分离，默认不开启，传2开启（仅支持中文）
     */
    private Integer roleType;
    
    /**
     * 语言识别模式，默认为模式1中英文模式
     * 1: 自动中英文模式
     * 2: 中文模式，可能包含少量英文
     * 4: 纯中文模式，不包含英文
     */
    private Integer engLangType;
    
    /**
     * 将参数转换为URL查询字符串的一部分
     * @return URL参数字符串
     */
    public String toQueryString() {
        StringBuilder sb = new StringBuilder();
        
        if (lang != null) sb.append("&lang=").append(lang);
        if (transType != null) sb.append("&transType=").append(transType);
        if (transStrategy != null) sb.append("&transStrategy=").append(transStrategy);
        if (targetLang != null) sb.append("&targetLang=").append(targetLang);
        if (punc != null) sb.append("&punc=").append(punc);
        if (pd != null) sb.append("&pd=").append(pd);
        if (vadMdn != null) sb.append("&vadMdn=").append(vadMdn);
        if (roleType != null) sb.append("&roleType=").append(roleType);
        if (engLangType != null) sb.append("&engLangType=").append(engLangType);
        
        return sb.toString().isEmpty() ? "" : sb.toString().substring(1); // 移除第一个&
    }
} 